qx.Class.define("caraffa.forms.CargaTurnos", {
	extend : qx.ui.form.ow.FormTab,
	construct : function () {
		this.base(arguments, "carga_turnos", "Carga de Turnos");
		
		this._grpDatos = new qx.ui.groupbox.GroupBox();
		this._grpDatos.setLayout(new qx.ui.layout.VBox(5));
		this._cmbClinica = new qx.ui.form.ow.ComboBox("Clinica:", [{value:"1", label:"Zipoli"}, {value:"2", label:"Avellaneda"}]);
		this._txdFecha = new qx.ui.form.ow.DateText("Fecha:");
		this._cmbMedico = new qx.ui.form.ow.ComboFilter("Medico:");
		this._cmbPaciente = new qx.ui.form.ow.ComboFind("Paciente:");
		this._cmbFormaPago = new qx.ui.form.ow.ComboBox("Forma de Pago:");
		this._cmbPrestacion = new qx.ui.form.ow.ComboFilter("Prestacion:");
		this._txtImporte = new qx.ui.form.ow.TextField("Importe:");
		this._txtCodigoHabilitacion = new qx.ui.form.ow.TextField("Codigo de Habilitacion:");
		this._txaObservaciones = new qx.ui.form.ow.TextArea("Observaciones:");
		this._btnGuardar = new qx.ui.form.Button("Guardar");
		
		
		this._grpDatos.add(this._cmbClinica);
		this._grpDatos.add(this._txdFecha);
		this._grpDatos.add(this._cmbMedico);
		this._grpDatos.add(this._cmbPaciente);
		this._grpDatos.add(this._cmbFormaPago);
		this._grpDatos.add(this._cmbPrestacion);
		this._grpDatos.add(this._txtImporte);
		this._grpDatos.add(this._txtCodigoHabilitacion);
		this._grpDatos.add(this._txaObservaciones);
		this._grpDatos.add(this._btnGuardar);
		
		this._txtFiltro = new qx.ui.form.ow.TextField("Filtrar:");
		this._txtFiltro.getLabel().setWidth(40);
		this._cmbFiltros = new qx.ui.form.ow.ComboBox("", [{value:"F", label:"Fecha"}, {value:"M", label:"Medico"}, {value:"P", label:"Paciente"}, {value:"O", label:"Forma de Pago"}, {value:"E", label:"Prestacion"}, {value:"C", label:"Codigo de Habilitacion"}]);
		this._cmbFiltros.getLabel().setWidth(0);
		
		var model = new qx.ui.table.model.Simple();
		model.setColumns(["cod_turno", "Fecha", "Medico", "Paciente", "Forma Pago", "Prestacion", "Cod. Hab.", "Importe"], ["cod_turno", "fecha_asignada", "usuario", "paciente", "forma_pago", "prestacion", "codigo_habilitacion", "importe"]);
		this._tblTurnos = new qx.ui.table.Table(model);
		
		this._tblTurnos.setHeight(290);
		this._tblTurnos.getTableColumnModel().setColumnVisible(0, false);
		this._tblTurnos.setColumnWidth(1, 70);
		this._tblTurnos.setColumnWidth(2, 70);
		this._tblTurnos.setColumnWidth(3, 100);
		this._tblTurnos.setColumnWidth(4, 150);
		this._tblTurnos.setColumnWidth(5, 100);
		this._tblTurnos.setColumnWidth(6, 50);
		this._tblTurnos.setColumnWidth(7, 70);

		this._btnBorrar = new qx.ui.form.Button("Borrar").set({width:300});
		
		this.add(this._grpDatos, {left:10, top:10});
		this.add(this._txtFiltro, {left:360, top:10});
		this.add(this._cmbFiltros, {left:620, top:10});
		this.add(this._tblTurnos, {left:360, top:40});
		this.add(this._btnBorrar, {left:500, top:335});
//		this.add(this._txdFecha, {left:10, top:10});
//		this.add(this._cmbMedico, {left:10, top:40});
//		this.add(this._cmbPaciente, {left:10, top:70});
//		this.add(this._cmbFormaPago, {left:10, top:100});
//		this.add(this._cmbPrestacion, {left:10, top:130});
//		this.add(this._txaObservaciones, {left:10, top:160});
//		this.add(this._txtCodigoHabilitacion, {left:10, top:280});
//		this.add(this._txtImporte, {left:10, top:310});
//		this._cmbMedico.setNewValues()
		this._attachEvents();
		this._initForm();
	},
	members : {
		_attachEvents : function () {
			this._txtFiltro.getText().addListener("input", function () {
				var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
				if (this._txtFiltro.getValue().length > 2) {
					var p = {};
					p.txtfiltro = this._txtFiltro.getValue();
					p.filtro = this._cmbFiltros.getValue();
					var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
					var res = rpc.callSync("getTurnosCargados", p);
					this._tblTurnos.getTableModel().setDataAsMapArray(res);
				}
			}, this);
			
			this._cmbFiltros.addListener("changeValue", function () {
				this._txtFiltro.getText().fireDataEvent("input");
			}, this);
			
			this._cmbPaciente.addListener("changeValue", function () {
				var p = {};
				p.dni_paciente = this._cmbPaciente.getValue();
				var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
				var res = rpc.callSync("getPlanesPaciente", p);
				this._cmbFormaPago.setNewValues(res, true);
			}, this);
			
			this._cmbFormaPago.addListener("changeValue", function () {
				var p = {};
				p.cod_plan = this._cmbFormaPago.getValue();
				var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
				var res = rpc.callSync("getPrestaciones", p);
				this._cmbPrestacion.setNewValues(res);
			}, this);
			
			this._cmbPrestacion.addListener("changeValue", function () {
				var p = {};
				p.cod_nomenclador = this._cmbPrestacion.getValue();
				var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
				var res = rpc.callSync("getImporte", p);
				this._txtImporte.setValue(res);
			}, this);
			
			this._btnGuardar.addListener("execute", function () {
				var p = {};
				p.cod_clinica = this._cmbClinica.getValue();
				p.fecha_asignada = this._txdFecha.getValueToSQL();
				p.dni_usuario = this._cmbMedico.getValue();
				p.dni_paciente = this._cmbPaciente.getValue();
				p.cod_plan = this._cmbFormaPago.getValue();
				p.cod_nomenclador = this._cmbPrestacion.getValue();
				p.importe = this._txtImporte.getValue();
				p.cod_habilitacion = this._txtCodigoHabilitacion.getValue();
				p.observaciones = this._txaObservaciones.getValue();
				
				if ((p.fecha_asignada) && (p.dni_usuario) && (p.dni_paciente) && (p.cod_plan) && (p.cod_nomenclador) && (p.importe)) { 
					var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
					var res = rpc.callSync("addTurno", p);
					alert("Datos Guardados Correctamente!");
					this._cmbMedico.setValue("");
					this._cmbPaciente.getCombo().getChildControl("textfield").setValue("");
					this._cmbPrestacion.getCombo().getChildControl("textfield").setValue("");
					this._txtImporte.setValue("");
					this._txtCodigoHabilitacion.setValue("");
					this._txaObservaciones.setValue("");
					
					var res = rpc.callSync("getTurnosCargados");
					this._tblTurnos.getTableModel().setDataAsMapArray(res);
				} else {
					alert("Faltan datos para poder Guardar!");
				}
			}, this);
			
			this._btnBorrar.addListener("execute", function () {
				if (this._tblTurnos.getTableModel().getValue(0, this._tblTurnos.getFocusedRow())) {
					if (confirm("Esta seguro que desea eliminar el Turno seleccionado?")) {
						var p = {};
						p.cod_turno = this._tblTurnos.getTableModel().getValue(0, this._tblTurnos.getFocusedRow());
						var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
						var res = rpc.callSync("delTurno", p);
						var res = rpc.callSync("getTurnosCargados");
						this._tblTurnos.getTableModel().setDataAsMapArray(res);
					}
				} else {
					alert("Debe seleccionar el Turno que desea Borrar!");
				}
			}, this);
		},
		_initForm : function () {
			var rpc = new qx.io.remote.Rpc("services/", "CargaTurnos");
			var res = rpc.callSync("getMedicos");
			this._cmbMedico.setNewValues(res);
			
			var res = rpc.callSync("getPacientes");
			this._cmbPaciente.setNewValues(res);
			
			var res = rpc.callSync("getTurnosCargados");
			this._tblTurnos.getTableModel().setDataAsMapArray(res);
		}
	}
});
